window.addEventListener('DOMContentLoaded', () => {
    const replaceText = (selector, text) => {
        const element = document.getElementById(selector)
        if (element) element.innerText = text
    }

    for (const type of ['chrome', 'node', 'electron']) {
        replaceText(`${type}-version`, process.versions[type])
    }
})


const { contextBridge, ipcRenderer } = require('electron')
contextBridge.exposeInMainWorld('myAPI', {
    // 异步地向主进程发送消息
    send: (channel, data) => {
        ipcRenderer.send(channel, data)
    },
    // 同步地向主进程发送消息并等待响应
    invoke: (channel, ...args) => {
        return ipcRenderer.invoke(channel, ...args)
    },
    // 注册一个监听主进程消息的监听器
    receive: (channel, func) => {
        ipcRenderer.on(channel, (event, ...args) => func(...args))
    },
    // 移除之前注册的监听主进程消息的监听器
    removeListener: (channel, listener) => {
        ipcRenderer.removeListener(channel, listener)
    },
    // 移除之前在特定通道上注册的所有监听主进程消息的监听器
    removeAllListeners: (channel) => {
        ipcRenderer.removeAllListeners(channel)
    },
    // 检查特定通道上是否有任何监听主进程消息的监听器
    hasListeners: (channel) => {
        return ipcRenderer.listenerCount(channel) > 0
    },
    // 异步地向主进程发送消息并等待响应
    sendSync: (channel, data) => {
        return ipcRenderer.sendSync(channel, data)
    },
    // 向指定的 WebContents 发送消息并等待响应
    sendTo: (webContentsId, channel, ...args) => {
        return ipcRenderer.sendTo(webContentsId, channel, ...args)
    },
    // 异步地向宿主页发送消息并等待响应
    sendToHost: (channel, ...args) => {
        return ipcRenderer.sendToHost(channel, ...args)
    },
    // 将主进程的控制台消息转发到渲染进程的控制台
    forwardConsoleMessage: (enabled) => {
        ipcRenderer.send('console-message-forwarding', enabled)
    },
    // 启用/禁用渲染器进程中的 remote 模块
    enableRemoteModule: (enabled) => {
        ipcRenderer.send('enable-remote-module', enabled)
    },
    // 获取当前渲染进程的窗口 ID
    getCurrentWindowId: () => {
        return ipcRenderer.sendSync('get-current-window-id')
    },
    // 获取当前渲染进程的进程 ID
    getCurrentProcessId: () => {
        return ipcRenderer.sendSync('get-current-process-id')
    },
    // 获取主进程的进程 ID
    getMainProcessId: () => {
        return ipcRenderer.sendSync('get-main-process-id')
    }
})
